package ltd.newbee.mall.config.annotation;

import java.lang.annotation.*;

/**
 * 限流
 */
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface RequestRateLimiter {

    /**
     * 限流key
     */
    String key() default "rate:limit:";

    /**
     * 限流时间,单位秒
     */
    int time() default 60;

    /**
     * 限流次数
     */
    int count() default 100;

    /**
     * 限流类型
     */
    LimitType limitType() default LimitType.DEFAULT;


    enum LimitType {

        /**
         * 默认策略
         */
        DEFAULT,

        /**
         * 根据IP进行限流
         */
        IP
    }

}
